﻿using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Net;
using Grundy.Common;
using Grundy.Entity;
using Grundy.Message;

namespace Grundy.Licensing.Server
{
    public interface ILicensingStrategy
    {
        Guid Checkout(LicenseRequestInformation lri, object syncLock);
        bool Checkin(LicenseRequestInformation lri, object syncLock);
        bool Reassert(Guid clientSessionId, EndPoint endpoint);
        void Cleanup();
        IEnumerable<ClientSession> GetClientSessions();
        bool HasClientSession(Guid sessionId);
        long GetExhaustedLicenseCount();
    }
}